package com.app.backend.common.service;

/**
 * @program: RedisValueService
 * @description: redis操作类- value操作
 * @author: Zhun.Xiao
 * @create: 2018-10-29 16:12
 **/
public interface RedisValueService<T> {


    public Long incr(String redisKey, Long delta, Long expire);

    /**
     * 向redis中存放单个数据
     *
     * @param redisKey redis存放的key
     * @param value    存放的对象
     * @param expire   存放时间 单位：秒
     */
    public void set(String redisKey, T value, long expire);


    public void expire(String redisKey, T value, long expire);


    /**
     * 向redis移除单个数据
     *
     * @param redisKey
     */
    public void remove(String redisKey);


    /**
     * 向redis获取单个数据
     *
     * @param redisKey
     * @return
     */
    public T get(String redisKey);

    /**
     * a
     *
     * @param redisKey
     * @param targetClass
     * @return
     */
    public <T extends Object> T get(String redisKey, Class<T> targetClass);

    /**
     * 向redis发送get and set 操作
     *
     * @param redisKey
     * @param value
     * @return
     */
    public T getAndSet(String redisKey, T value);



}
